package com.jrx.anytxn.transaction.dto.loan;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jrx.anytxn.transaction.dto.common.CommonReq;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @program: anytxn-cf-parent
 * @description:
 * @author: xiaoyu.jing
 * @date: 2021-06-26 10:31
 **/
public class BillDetailsInquiryRes implements Serializable {

    /**
     * 交易流水号
     */
    private String seqNo;

    /**
     * 账单月份yyyyMM
     */
    private String billMonth;

    /**
     * 剩余应还
     */
    private BigDecimal totalBalance = BigDecimal.ZERO;

    /**
     * 还款金额
     */
    private BigDecimal paymentAmount = BigDecimal.ZERO;

    /**
     * 退款金额
     */
    private BigDecimal refundAmount = BigDecimal.ZERO;

    /**
     * 交易分期金额     例如本期是4月，3月1-31日，做交易分期的金额
     */
    private BigDecimal transStagingAmount = BigDecimal.ZERO;

    /**
     * 消费分期金额
     */
    private BigDecimal consumeStagingAmount = BigDecimal.ZERO;

    /**
     * 账单分期金额   4月1出账单后，本期做账单分期的金额
     */
    private BigDecimal billStagingAmount = BigDecimal.ZERO;

    /**
     * 剩余应还循环利息      一期没有，为0
     */
    private BigDecimal circleInterestBalance = BigDecimal.ZERO;

    /**
     * 剩余应还逾期罚息      信用付类订单，本期产生的罚息
     */
    private BigDecimal penaltyBalance = BigDecimal.ZERO;

    /**
     * 剩余应还逾期分期利息   交易分期、消费分期、账单分期，本期罚息
     */
    private BigDecimal delqStagingInterestBalance = BigDecimal.ZERO;

    /**
     * 账单总金额
     */
    private BigDecimal billTotalAmount = BigDecimal.ZERO;

    /**
     * 上月账单余额    上月账单未还本金、利息余额
     */
    private BigDecimal lastBillBalance = BigDecimal.ZERO;

    /**
     * 本期新增消费    3月1-31日，信用付交易的总金额
     */
    private BigDecimal consumeAmount = BigDecimal.ZERO;

    /**
     * 分期入账金额   包含交易分期、账单分期，在本期账单内的本金利息
     */
    private BigDecimal stagingBillAmount = BigDecimal.ZERO;

    /**
     * 循环利息       上月消费最低还款后计提的利息，估算到本期还款日
     */
    private BigDecimal circleInterestAmount = BigDecimal.ZERO;

    /**
     * 逾期罚息     上月消费逾期欠款罚息复利，估算到本期还款日
     */
    private BigDecimal penaltyAmount = BigDecimal.ZERO;

    /**
     * 上月账单罚息、复利估算到本期还款日
     */
    private BigDecimal delqStagingInterestAmount = BigDecimal.ZERO;

    /**
     * 查询月还款金额
     */
    private BigDecimal queryMonthPaymentAmount = BigDecimal.ZERO;


    /**
     * 查询月退款金额
     */
    private BigDecimal queryMonthRefundAmount = BigDecimal.ZERO;

    /**
     * 还款日
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date paymentDate;
    /**
     * 是否可做账单分期 1是 0否
     */
    private String canStaging = "0";
    /**
     * 是否有逾期 0否 1是 有任一笔逾期，都是
     */
    private String hasDelq = "0";

    /**
     * 账单状态
     */
    private String monthStatus;

    /**
     * 账单详情
     */
    List<BillDetail> billDetailList = new ArrayList<>();

    public String getSeqNo() {
        return seqNo;
    }

    public void setSeqNo(String seqNo) {
        this.seqNo = seqNo;
    }

    public String getBillMonth() {
        return billMonth;
    }

    public void setBillMonth(String billMonth) {
        this.billMonth = billMonth;
    }

    public BigDecimal getTotalBalance() {
        return totalBalance;
    }

    public void setTotalBalance(BigDecimal totalBalance) {
        this.totalBalance = totalBalance;
    }

    public BigDecimal getPaymentAmount() {
        return paymentAmount;
    }

    public void setPaymentAmount(BigDecimal paymentAmount) {
        this.paymentAmount = paymentAmount;
    }

    public BigDecimal getRefundAmount() {
        return refundAmount;
    }

    public void setRefundAmount(BigDecimal refundAmount) {
        this.refundAmount = refundAmount;
    }

    public BigDecimal getTransStagingAmount() {
        return transStagingAmount;
    }

    public void setTransStagingAmount(BigDecimal transStagingAmount) {
        this.transStagingAmount = transStagingAmount;
    }

    public BigDecimal getBillStagingAmount() {
        return billStagingAmount;
    }

    public void setBillStagingAmount(BigDecimal billStagingAmount) {
        this.billStagingAmount = billStagingAmount;
    }

    public BigDecimal getCircleInterestBalance() {
        return circleInterestBalance;
    }

    public void setCircleInterestBalance(BigDecimal circleInterestBalance) {
        this.circleInterestBalance = circleInterestBalance;
    }

    public BigDecimal getPenaltyBalance() {
        return penaltyBalance;
    }

    public void setPenaltyBalance(BigDecimal penaltyBalance) {
        this.penaltyBalance = penaltyBalance;
    }

    public BigDecimal getDelqStagingInterestBalance() {
        return delqStagingInterestBalance;
    }

    public void setDelqStagingInterestBalance(BigDecimal delqStagingInterestBalance) {
        this.delqStagingInterestBalance = delqStagingInterestBalance;
    }

    public BigDecimal getBillTotalAmount() {
        return billTotalAmount;
    }

    public void setBillTotalAmount(BigDecimal billTotalAmount) {
        this.billTotalAmount = billTotalAmount;
    }

    public BigDecimal getLastBillBalance() {
        return lastBillBalance;
    }

    public void setLastBillBalance(BigDecimal lastBillBalance) {
        this.lastBillBalance = lastBillBalance;
    }

    public BigDecimal getConsumeAmount() {
        return consumeAmount;
    }

    public void setConsumeAmount(BigDecimal consumeAmount) {
        this.consumeAmount = consumeAmount;
    }

    public BigDecimal getStagingBillAmount() {
        return stagingBillAmount;
    }

    public void setStagingBillAmount(BigDecimal stagingBillAmount) {
        this.stagingBillAmount = stagingBillAmount;
    }

    public BigDecimal getCircleInterestAmount() {
        return circleInterestAmount;
    }

    public void setCircleInterestAmount(BigDecimal circleInterestAmount) {
        this.circleInterestAmount = circleInterestAmount;
    }

    public BigDecimal getPenaltyAmount() {
        return penaltyAmount;
    }

    public void setPenaltyAmount(BigDecimal penaltyAmount) {
        this.penaltyAmount = penaltyAmount;
    }

    public BigDecimal getDelqStagingInterestAmount() {
        return delqStagingInterestAmount;
    }

    public void setDelqStagingInterestAmount(BigDecimal delqStagingInterestAmount) {
        this.delqStagingInterestAmount = delqStagingInterestAmount;
    }

    public Date getPaymentDate() {
        return paymentDate;
    }

    public void setPaymentDate(Date paymentDate) {
        this.paymentDate = paymentDate;
    }

    public String getCanStaging() {
        return canStaging;
    }

    public void setCanStaging(String canStaging) {
        this.canStaging = canStaging;
    }

    public String getHasDelq() {
        return hasDelq;
    }

    public void setHasDelq(String hasDelq) {
        this.hasDelq = hasDelq;
    }

    public List<BillDetail> getBillDetailList() {
        return billDetailList;
    }

    public void setBillDetailList(List<BillDetail> billDetailList) {
        this.billDetailList = billDetailList;
    }

    public String getMonthStatus() {
        return monthStatus;
    }

    public void setMonthStatus(String monthStatus) {
        this.monthStatus = monthStatus;
    }

    public BigDecimal getQueryMonthRefundAmount() {
        return queryMonthRefundAmount;
    }

    public void setQueryMonthRefundAmount(BigDecimal queryMonthRefundAmount) {
        this.queryMonthRefundAmount = queryMonthRefundAmount;
    }

    public BigDecimal getQueryMonthPaymentAmount() {
        return queryMonthPaymentAmount;
    }

    public void setQueryMonthPaymentAmount(BigDecimal queryMonthPaymentAmount) {
        this.queryMonthPaymentAmount = queryMonthPaymentAmount;
    }

    /**
     * 获取 消费分期金额
     *
     * @return consumeStagingAmount 消费分期金额
     */
    public BigDecimal getConsumeStagingAmount() {
        return this.consumeStagingAmount;
    }

    /**
     * 设置 消费分期金额
     *
     * @param consumeStagingAmount 消费分期金额
     */
    public void setConsumeStagingAmount(BigDecimal consumeStagingAmount) {
        this.consumeStagingAmount = consumeStagingAmount;
    }
}
